/**    
 * 1、安装 npm install ejs --save
 * 2、app.set("view engine", "ejs")
 * 3、使用（默认加载模板引擎的文件夹是 views）
 *  res.render("index", {
 *    参数
 *  })
 * 4、修改模板文件的后缀为.html
 *  const ejs = require('ejs')
 *  app.engine('html', ejs.__express)
 *  app.set("view engine", "html")
 */
const ejs = require('ejs')

const express = require('express')

const app = express()


// 内置中间件
// 利用 express.static 托管静态文件,即浏览器可以直接访问到,可以配置静态web目录
app.use(express.static('public'))

app.engine('html', ejs.__express)
// 配置模板引擎
app.set("view engine", "html")


// 应用级中间件,主要用于权限判断
app.use((req, res, next) => {
  console.log(new Date().getDate())
  next()
})

// 路由级中间件
// app.get('/news/:id', (req, res) => {
//   res.send('新闻动态路由')
// })

app.get('/', (req, res) => { // get: 显示数据
  var title = "你好 ejs"
  // console.log(req)
  res.render("index", {
    title
  })
})



// app.use('/static', express.static('public')) // /static 前缀

app.post('/doLogin', (req, res) => { // post: 增加数据
  console.log("执行登录")
  res.send('执行登录')
  console.log("执行登录结束")
})

app.put('/edit', (req, res) => { // put: 主要用于修改数据
  console.log("执行修改")
  res.send('修改')
  console.log("修改结束")
})

app.delete('/del', (req, res) => { // delete: 主要用于删除数据
  console.log("执行删除")
  res.send('删除')
  console.log("修改结束")
})

app.get("/article/:id", (req, res) => { // 动态路由
  var { id } = req.params
  res.send('动态路由' + id)
})

// get传值 http://localhost:3000/product?id=123&cid=123
app.get('/product', (req, res) => {
  // console.log(req.query)
  const { id, cid } = req.query
  console.log(id, cid)
  res.send("product")
})

/// 错误处理中间件
app.use((req, res, next) => {
  res.status(404).send('404了兄嘚')
})

// 监听端口  端口号建议写成 3000 以上
app.listen(3000)
